package kr.co.bettersoftportal.site.management.controller;


import kr.co.bettersoftportal.site.domain.Member;
import kr.co.bettersoftportal.site.management.service.BettersoftPortalService;
import kr.co.bettersoftportal.site.management.util.BettersoftPortalCommon;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.Locale;

/**
 * CheckMileage Controller : 회원 및 가맹점 관리 사이트 기능
 */
public class BlogController extends MultiActionController {



    // SLF4J Logging
    private Logger logger = LoggerFactory.getLogger(BlogController.class);

    //    @Autowired
//    private BettersoftPortalService bettersoftPortalService = null;
    @Autowired
    private LocaleResolver localeResolver = null;

    @Autowired
    private BettersoftPortalService bettersoftPortalService = null;



    /**
     * 언어 설정을 바꾼다.
     *
     * @param request
     * @param response
     * @return
     */
    public ModelAndView changeLocale(HttpServletRequest request, HttpServletResponse response) {
        String language = request.getParameter("language");
        Locale locale = new Locale(language);
        localeResolver.setLocale(request, response, locale);
        return new ModelAndView("intro");
    }

    /**
     * index 페이지로 이동한다.
     *
     * @param request HttpServletRequest
     * @param response HttpServletReponse
     * @return ModelAndView
     */
    public ModelAndView index(HttpServletRequest request, HttpServletResponse response) {


        logger.info("index");

        return new ModelAndView("index");
//        return new ModelAndView("index");
    }


    /**
     * 로그인을 시도한다. 성공 시 main 페이지로 이동한다.
     *
     * @param request
     * @param response
     * @return
     */
    public ModelAndView login(HttpServletRequest request, HttpServletResponse response) throws Exception{


        logger.info("login");


        Member member = new Member();
        bind(request, member);

        String id = request.getParameter("id");

        BettersoftPortalCommon common = new BettersoftPortalCommon();

        // 패스워드 암호화 대조
        String password = common.getEncodedPassword(request.getParameter("password"));

        logger.info("login");
        logger.info("id        : {}", id);
        logger.info("password  : {}", password);

        String result = bettersoftPortalService.logIn(id, password);

        if(result == "SUCCESS"){ //로그인 서비스 성공

            Member smember = new Member();
            smember = bettersoftPortalService.getMemberById(id);

            String name = smember.getNAME();
            String email = smember.getEMAIL();
            String grade = smember.getGRADE();

            // 로그인 최종 성공시 세션에 멤버의 정보를 담는다
            HttpSession session = request.getSession();

            session.setAttribute("userId", id);
            session.setAttribute("name", name);
            session.setAttribute("email", email);
            session.setAttribute("grade", grade);


            ModelAndView mav = new ModelAndView(request.getParameter("nextTarget"), "member", member);
            return mav;
        }else{
            return new ModelAndView("index");
        }
    }






    /**
     * 로그인 후 메인 페이지로 접속한다.
     *
     * @param request
     * @param response
     * @return
     * @throws Exception
     */
    public ModelAndView main(HttpServletRequest request, HttpServletResponse response) {
        String userId = request.getParameter("userId");
        String userPassword = request.getParameter("userPassword");

        logger.info("userId : {}", userId);
        logger.info("userPassword : {}", userPassword);

//            Member member = new Member();
//            member.setBETTERSOFT_ID(userId);
//            member.setPASSWORD(userPassword);

        String result = bettersoftPortalService.logIn(userId, userPassword);
        logger.info("result : {}", result);

        return new ModelAndView("main");
    }

    /**
     * 회원가입 페이지로 이동한다
     *
     * @param request
     * @param response
     * @return
     */
    public ModelAndView register(HttpServletRequest request, HttpServletResponse response) {
        return new ModelAndView("register");
    }


    /**
     *  개인 정보 화면으로 이동한다.  버튼을 두어 개인정보 변경 / 비밀번호 변경 가능하다.
     *
     * @param request
     * @param response
     * @return
     */
    public ModelAndView myInfo(HttpServletRequest request, HttpServletResponse response) {
        return new ModelAndView("myInfo");
    }


    /**
     *  개인 정보 변경 화면으로 이동한다.
     *
     * @param request
     * @param response
     * @return
     */
    public ModelAndView changeMyInfo(HttpServletRequest request, HttpServletResponse response) {
        return new ModelAndView("changeMyInfo");
    }


    /**
     *  비밀번호 변경 화면으로 이동한다.
     *
     * @param request
     * @param response
     * @return
     */
    public ModelAndView changeMyPassword(HttpServletRequest request, HttpServletResponse response) {
        return new ModelAndView("changeMyPassword");
    }

    /**
     * 회사소개
     *
     * @param request
     * @param response
     * @return
     */
    public ModelAndView introduce(HttpServletRequest request, HttpServletResponse response) {
        return new ModelAndView("introduce");
    }

    /**
     * 회사소개 - 조직
     *
     * @param request
     * @param response
     * @return
     */
    public ModelAndView introduceOrg(HttpServletRequest request, HttpServletResponse response) {
        return new ModelAndView("introduceOrg");
    }

    /**
     * 회사소개 - 연혁
     *
     * @param request
     * @param response
     * @return
     */
    public ModelAndView introduceHis(HttpServletRequest request, HttpServletResponse response) {
        return new ModelAndView("introduceHis");
    }

    /**
     * 회사소개 - 세부실적
     *
     * @param request
     * @param response
     * @return
     */
    public ModelAndView introducePer(HttpServletRequest request, HttpServletResponse response) {
        return new ModelAndView("introducePer");
    }

    /**
     * 서비스
     *
     * @param request
     * @param response
     * @return
     */
    public ModelAndView service(HttpServletRequest request, HttpServletResponse response) {
        return new ModelAndView("service");
    }

    /**
     * 제품
     *
     * @param request
     * @param response
     * @return
     */
    public ModelAndView product(HttpServletRequest request, HttpServletResponse response) {
        return new ModelAndView("product");
    }

    /**
     * 제품 - 데이브
     *
     * @param request
     * @param response
     * @return
     */
    public ModelAndView dayve(HttpServletRequest request, HttpServletResponse response) {
        return new ModelAndView("dayve");
    }

    /**
     * 제품 - 캐럿 IOS
     *
     * @param request
     * @param response
     * @return
     */
    public ModelAndView carrotIOS(HttpServletRequest request, HttpServletResponse response) {
        return new ModelAndView("carrotIOS");
    }

    /**
     * 제품 - 캐럿 안드로이드
     *
     * @param request
     * @param response
     * @return
     */
    public ModelAndView carrotAndroid(HttpServletRequest request, HttpServletResponse response) {
        return new ModelAndView("carrotAndroid");
    }

    /**
     * 제품 - 레쇼날
     *
     * @param request
     * @param response
     * @return
     */
    public ModelAndView rational(HttpServletRequest request, HttpServletResponse response) {
        return new ModelAndView("rational");
    }

    /**
     * 제품 - 웹스피어
     *
     * @param request
     * @param response
     * @return
     */
    public ModelAndView websphere(HttpServletRequest request, HttpServletResponse response) {
        return new ModelAndView("websphere");
    }

    /**
     * 제품 - 디비2
     *
     * @param request
     * @param response
     * @return
     */
    public ModelAndView db2(HttpServletRequest request, HttpServletResponse response) {
        return new ModelAndView("db2");
    }

    /**
     * 제품 - 로터스
     *
     * @param request
     * @param response
     * @return
     */
    public ModelAndView lotus(HttpServletRequest request, HttpServletResponse response) {
        return new ModelAndView("lotus");
    }

    /**
     * 제품 - 티볼리
     *
     * @param request
     * @param response
     * @return
     */
    public ModelAndView tivoli(HttpServletRequest request, HttpServletResponse response) {
        return new ModelAndView("tivoli");
    }

    /**
     * 문의하기
     *
     * @param request
     * @param response
     * @return
     */
    public ModelAndView contact(HttpServletRequest request, HttpServletResponse response) {
        return new ModelAndView("contact");
    }


    /**
     * 고객센터에서 상호명과 연락처를 carrot@bettersoft.co.kr 로 보내준다.
     *
     * @param request
     * @param response
     * @return
     */
    public ModelAndView sendEmail(HttpServletRequest request, HttpServletResponse response) {

        /**
         * 연락처 phoneNumber, 상호명 companyName 을 request 로 부터 얻어온다.
         */
        String name = request.getParameter("name");
        String phoneNumber = request.getParameter("phoneNumber");
        String content = request.getParameter("content");


        logger.info("sendEmail");
        logger.info("name        : {}", name);
        logger.info("phoneNumber : {}", phoneNumber);
        logger.info("content     : {}", content);

        /**
         * 메일의 제목
         */
        String subject = "Bettersoft 홈페이지 문의 접수";

        /**
         * 메일의 내용 String 에 HTML 태그형식을 붙여서 내용을 완성한다.
         */
        String mailContent = "<html><body>" + "이름 : " + name + "<br>연락처 : " + phoneNumber + "<br>문의내용 : " + content + "</body></html>";

        /**
         * 받는 사람
         */
        String userId = "Bettersoft";

        /**
         * 보내는 사람의 메일주소
         */
        String fromUser = "bettersoft.webmaster@gmail.com";

        /**
         * 받는 사람의 메일주소
         */
        String toUser = "bang@bettersoft.co.kr";

        /**
         * 메일보내기 서비스 제목, 내용, 보내는 사람, 받는사람, 보내는 사람 이름
         */
        String Result = bettersoftPortalService.sendMail(subject, content, fromUser, toUser, userId);

        logger.info("Result : {}", Result);



        return new ModelAndView("redirect:/contact.do");
    }

    

    




    ///////////////////////////////////////
    // Spring Framework Setter Injection //
    ///////////////////////////////////////

}
